﻿using System;
using System.Collections.Generic;
using System.Text;

namespace csharpcore7_ch4
{
    class DelegateArgsCompatibleExample
    {
        /// <summary>
        /// 委托有比它的目标方法参数类型更具体的参数类型
        /// 这里为string类型，目标方法参数类型为object。
        /// </summary>
        /// <param name="s"></param>
        delegate void StringAction(string s);
        static void Main()
        {
            StringAction sa = new StringAction(ActionObject);//实例化一个委托对象sa。将目标方法传递给委托对象。
           
            //调用目标方法，参数隐式向上转换为object。
            sa("hello"); //hello

            //sa(1);  //语法错误
        }
        static void ActionObject(object o) => Console.WriteLine(o);      
    }   
}
